﻿#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>

//作用域和生命周期
//局部变量的作用域，就是变量所在的局部范围
//全局变量的作用域，整个工程
//
//int g_val = 2021;//全局变量

//int main()
//{
//	printf("1:%d\n", g_val);
//	printf("hehe\n");
//	{
//		int a = 10;
//		printf("a=%d\n", a);
//		printf("2:%d\n", g_val);
//	}
//	printf("3:%d\n", g_val);
//	
//	return 0;
//}

//声明一下变量
extern int g_val;

//int main()
//{
//	printf("%d\n", g_val);
//
//	return 0;
//}

//生命周期
//变量的生命周期：变量的创建和销毁之间的间段
//
//局部变量的生命周期：进入局部范围生命开始，出局部范围生命结束
// 全局变量的生命周期：程序的生命周期

//int main()
//{
//	{
//		int a = 10;
//		printf("%d\n", a);
//	}
//	printf("%d\n", a);
//	return 0;
//}


//常量

#define MAX 10000
//int main()
//{
	//1.字面常量
	//3.14;//浮点型常量
	//10;//整型常量
	//'a';//字符常量
	//"abcdef";//字符串常量

	//2.const修饰的常变量
	//const int num = 10;//num是常变量-具有常属性（不能被改变的属性）
	//num = 20;
	//printf("%d\n", num);//20
	//int arr[10] = { 0 };//10个元素
	//const int n = 10;//const修饰完还是变量
	//int arr2[n] = { 0 };//n是变量，这里是不行

	//3.#define 定义的标识符常量
	//MAX= 20000;//err
	//int n = MAX;
	//printf("%d\n", n);



//	return 0;
//}

////性别
//enum Sex
//{
//	//这种枚举类型的变量的未来可能取值
//	//枚举常量
//	MALE=3,//赋初值
//	FEMALE,
//	SECRET
//
//};
//
//int main()
//{
//	//4.枚举常量
//    //可以一一列举的常量
//	enum Sex s= MALE;
//	//MALE = 3;//err
//	printf("%d\n", MALE);
//	printf("%d\n", FEMALE);
//	printf("%d\n", SECRET);
//	return 0;
//}


//字符串：一串字符-用双引号括起来的一串字符

//i/*nt main()
//{
//	"hello bit";
//	"abcdefg";
//
//
//	return 0;
//}*/

//int main()
//{
//	//字符数组-数组是一组相同类型的元素
//	//字符串在结尾的位置隐藏了一个\0的字符
//	//\0是字符串的结束标志
//	//char arr[] = "hello";
//
//	char arr1[] = "abc";
//	char arr2[] = { 'a','b','c','\0'};
//
//	printf("%d\n", strlen(arr1));
//	printf("%d\n", strlen(arr2));
//	//求字符串长度
//	//int n = strlen("abc");//string length
//	//printf("%d\n", n);
//	//printf("%s\n", arr1);
//	//printf("%s\n", arr2);
//	return 0;
//}

//int main()
//{
//	//printf("c:\\test\\test.c");  \t-水平制表符
//	//(are you ok)
//
//	//printf("%c\n",'\'');
//	//printf("ab\ncd");//\+n
//
//	printf("%s\n", "abc");
//	printf("%s\n", "a");
//	printf("%s\n", "\"");
//	printf("\a\a\a\a");
//	printf( "\\\\");
//	//printf在打印数据的时候，可以指定打印的格式
//
//	return 0;
//}                                                                            

//printf("%d",100);
//printf("%s","abc");
//printf("%c",'a');

//int main()
//{
//	//\ddd-表示一个八进制数，这个八进制数会被转换为对应的十进制数，该值对应的ASCII字符就是最终结果
//	//printf("%c\n", '\130');//8进制的130是十进制的88     X-ASCII码值是88
//	//
//	//printf(" % c\n", '\101');
//
//	//\xdd-表示一个十六进制数，这个十六进制数会被转换为对应的十进制数，该值对应的ASCII字符就是最终结果
//	//printf("%c\n", '\x30');//48-'0'
//	printf("%d\n", strlen("c:\test\328\test.c"));
//
//	return 0;
//}

//注释是用来解释复杂代码的
//

//int main()
//{
//	//int a = 10;//C++注释风格
//   /*
//	int b = 0;
//	*/           //C语言注释风格-不支持嵌套注释
//
//	return 0;
//}

//int main()
//{
//	int input = 0;
//	printf("加入比特：>\n");
//	printf("那要好好学习吗<1/0>?>:\n");
//	scanf("%d", &input);
//	if (input == 1)
//		printf("好offer\n");
//	else
//		printf("卖红薯\n");
//	return 0;
//}

//int main()
//{
//	int line = 0;
//	//循环
//	while (line < 30)
//	{
//		printf("写代码:%d\n", line);
//		line++;
//	}
//	if (line == 30)
//	{
//		printf("好offer\n");
//	}
//	return 0;
//}


//int Add (int x,int y)
//{
//int z = 0;
//z = x + y;
//return z;
//}
//int main()
//{
//	int num1 = 0;
//	int num2 = 0;
//	scanf("%d%d", &num1, &num2);
//	//int sum = num1 + num2;
//	//以函数的方式解决
//	int sum = Add(num1, num2);
//	printf("%d\n", sum);
//
//
//	return 0;
//}

//int main()
//{
//	//int a = 1;
// //   int b = 2;
// //   int c = 3;
// //   int d = 4;
//
//	//数组-一组相同类型的元素的集合
//	//10个整形1-10存起来
//	//数组是用下标来访问的
//	//int arr[10] = {1,2,3,4,5,6,7,8,9,10};
//	//char ch[5] = { 'a','b','c','d' };//不完全初始化，剩余的默认为0
//	//int i = 0;
//	//while (i < 10)
//	//{
//	//	printf("%d", arr[i]);
//	//	i++;
//	//}
//
//	//int a = 9 / 2;
//	//float a = 9 / 2.0;
//	int a = 9%2;//取模（余）
//
//	printf("%d\n", a);
//	return 0;
//}

//int main()
//{
//	int a = 2;
//	int b = a << 1;//<<-左移操作符-移动的是二进制位
//	printf("%d\n", b);
//
//	return 0;
//}



//int main()
//{
//	printf("%d\n", sizeof(int));
//
//	return 0;
//}
//
//int main()
//{
//	int a = 2;
//	a = a + 5;//=叫赋值
//	a += 5;//+=叫复合赋值，两行是一个意思 
//
//
//	return 0;
//}

//int main()
//{
//	//0表示假，非0表示真
//	int a = 0;
//		printf("%d\n", !a);//1
//
//		if (a)
//		{
//			//如果a为真，做事
//		}
//
//		if (!a)
//		{
//			//如果a为假，做事
//		}
//		a = -5;
//		a = -a;
//		a = +a;
//
//
//	return 0;
//}

//int main()
//{
//	//sizeof是一个操作符
//	// 不是函数
//	//计算类型或者变量的大小的
//	int a = 10;
//	printf("%d\n", sizeof(int));//sizeof 求类型的时候不能省略
//	printf("%d\n", sizeof a);//sizeof求变量时候可以省略（）
//	return 0;
//}

int main()
{
	int arr[10] = { 0 };
	printf("%d\n", sizeof(arr));//计算的是数组的大小，单位为字节
	printf("%d\n", sizeof(arr[0]));
	int z = sizeof(arr) / sizeof(arr[0]);
	printf("%d\n", z);
	return 0;
}